/*
   给定两个字符集合
   一个是全量字符集
   一个是已占用字符集
   已占用字符集中的字符不能再使用
   要求输出剩余可用字符集

   输入描述
    1. 输入一个字符串 一定包含@
    @前为全量字符集  @后的为已占用字符集
    2. 已占用字符集中的字符
    一定是全量字符集中的字符
    字符集中的字符跟字符之间使用英文逗号隔开
    3. 每个字符都表示为字符+数字的形式
     用英文冒号分隔
     比如a:1标识一个a字符
    4. 字符只考虑英文字母，区分大小写
     数字只考虑正整型 不超过100
    5. 如果一个字符都没被占用 @标识仍存在
    例如 a:3,b:5,c:2@

    输出描述：
      输出可用字符集
      不同的输出字符集之间用回车换行
      注意 输出的字符顺序要跟输入的一致
      不能输出b:3,a:2,c:2
      如果某个字符已全部占用 则不需要再输出

     示例一：
      输入
      a:3,b:5,c:2@a:1,b:2
      输出
      a:2,b:3,c:2
      说明：
      全量字符集为三个a，5个b，2个c
      已占用字符集为1个a，2个b
      由于已占用字符不能再使用
      因此剩余可用字符为2个a，3个b，2个c
      因此输出a:2,b:3,c:2
    */
const test = (input) => {
    let inputArr = input.split('@')
    let [A, B] = inputArr
    console.log(A, B)
    const fn = (arr) => {
        if (!arr) return []
        return arr.split(',').map(t => {
            let [label, value] = t.split(':')
            return {
                label, value: parseInt(value)
            }
        })
    }
    let arr1 = fn(A)
    let arr2 = fn(B)
    console.log(arr1)
    console.log(arr2)
    let arr = arr1.map(t => {
        let { label, value } = t

        let item = arr2.find(t => t.label === label)
        if (item) {
            value -= item.value
        }
        return { label, value }
    })
    let result=arr.map(t => `${t.label}:${t.value}`).join(",")

    console.log(result)

}
test('a:3,b:5,c:2@a:1,b:2')
test('a:3,b:5,c:2@')